.TH TEST 1 "GNU Shell Utilities" "FSF" \" -*- nroff -*-
.SH NAME
test \- check file types and compare values
.SH SYNOPSIS
.B test
[expr]
.br
.B test
{\-\-help,\-\-version}
.SH DESCRIPTION
This documentation is no longer being maintained and may be inaccurate
or incomplete.  The Texinfo documentation is now the authoritative source.
.PP
This manual page
documents the GNU version of
.BR test .
Note that most shells have a built-in command by the same name and
with similar functionality.
.PP
.B test
returns a status of 0 (true) or 1 (false) depending on
the evaluation of
the conditional expression
.IR expr .
Expressions may be unary or binary.  Unary
expressions are often used to examine the status of a file.  There
are string operators
and numeric comparison operators as well.

.PD 0
.TP
.B \-b \fIfile\fP
True if \fIfile\fP exists and is block special.
.TP
.B \-c \fIfile\fP
True if \fIfile\fP exists and is character special.
.TP
.B \-d \fIfile\fP
True if \fIfile\fP exists and is a directory.
.TP
.B \-e \fIfile\fP
True if \fIfile\fP exists
.TP
.B \-f \fIfile\fP
True if \fIfile\fP exists and is a regular file.
.TP
.B \-g \fIfile\fP
True if \fIfile\fP exists and is set-group-id.
.TP
.B \-k \fIfile\fP
True if \fIfile\fP has its ``sticky'' bit set.
.TP
.B \-L \fIfile\fP
True if \fIfile\fP exists and is a symbolic link.
.TP
.B \-p \fIfile\fP
True if \fIfile\fP exists and is a named pipe.
.TP
.B \-r \fIfile\fP
True if \fIfile\fP exists and is readable.
.TP
.B \-s \fIfile\fP
True if \fIfile\fP exists and has a size greater than zero.
.TP
.B \-S \fIfile\fP
True if \fIfile\fP exists and is a socket.
.TP
.B \-t [\fIfd\fP]
True if
.I fd
is opened on a terminal.  If
.I fd
is omitted, it defaults to 1 (standard output).
.TP
.B \-u \fIfile\fP
True if \fIfile\fP exists and its set-user-id bit is set.
.TP
.B \-w \fIfile\fP
True if \fIfile\fP exists and is writable.
.TP
.B \-x \fIfile\fP
True if \fIfile\fP exists and is executable.
.TP
.B \-O \fIfile\fP
True if \fIfile\fP exists and is owned by the effective user id.
.TP
.B \-G \fIfile\fP
True if \fIfile\fP exists and is owned by the effective group id.
.TP
\fIfile1\fP \-\fBnt\fP \fIfile2\fP
True if \fIfile1\fP is newer (according to
modification date) than \fIfile2\fP.
.TP
\fIfile1\fP \-\fBot\fP \fIfile2\fP
True if \fIfile1\fP is older than file2.
.TP
\fIfile1\fP \fB\-ef\fP \fIfile2\fP
True if \fIfile1\fP and \fIfile2\fP have the same device and
inode numbers.
.TP
.B \-z \fIstring\fP
True if the length of \fIstring\fP is zero.
.TP
.B \-n \fIstring\fP
.TP
\fIstring\fP
True if the length of
.I string
is non-zero.
.TP
\fIstring1\fP \fB=\fP \fIstring2\fP
True if the strings are equal.
.TP
\fIstring1\fP \fB!=\fP \fIstring2\fP
True if the strings are not equal.
.TP
.B ! \fIexpr\fP
True if
.I expr
is false.
.TP
\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
True if both
.I expr1
and
.I expr2
are true.
.TP
\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
True if either
.I expr1
or
.I expr2
is true.
.TP
.I arg1 \fBOP\fP arg2
.SM
.B OP
is one of
.BR \-eq ,
.BR \-ne ,
.BR \-lt ,
.BR \-le ,
.BR \-gt ,
or
.BR \-ge .
These arithmetic binary operators return true if \fIarg1\fP
is equal, not-equal, less-than, less-than-or-equal,
greater-than, or greater-than-or-equal than \fIarg2\fP,
respectively.
.I arg1
and
.I arg2
may be positive integers, negative integers, or the special
expression \fB\-l\fP \fIstring\fP, which evaluates to the
length of 
.IR string .
.SS OPTIONS
When GNU
.B test
is invoked with exactly one argument, the following options are recognized:
.TP
.I "\-\-help"
Print a usage message on standard output and exit successfully.
.TP
.I "\-\-version"
Print version information on standard output then exit successfully.
